package org.sws.trigger.api;

import org.sws.trigger.dto.*;
import org.sws.types.common.page.PageResult;
import org.sws.types.model.Response;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author sws
 * @Date 2025/3/25 09:23
 * @description:
 */
public interface IRaffleActivityService {
    /**
     * 活动装配，数据预热缓存
     * @param activityId 活动ID
     * @return 装配结果
     */
    Response<Boolean> armory(Long activityId);

    /**
     * 活动抽奖接口
     * @param request 请求对象
     * @return 返回结果
     */
    Response<ActivityDrawResponseDTO> draw(ActivityDrawRequestDTO request);
    /**
     * 日历签到返利接口
     *
     * @param userId 用户ID
     * @return 签到结果
     */
    Response<Boolean> calendarSignRebate(String userId);

    /**
     * 查询用户是否签到
     * @param userId 用户ID
     * @return 是否签到结果
     */
    Response<Boolean> isCalendarSignRebate(String userId);
    /**
     * 查询用户活动剩余抽奖额度
     * @param request 用户和活动ID
     * @return 返回结果「总额度、月额度、日额度」
     */
    Response<AccountSurplusResponseDTO> queryAccountSurplus(AccountSurplusRequestDTO request);

    /**
     * 查询用户活动抽奖记录
     * @param request 用户ID 活动ID
     * @return 抽奖记录
     */
    PageResult<AwardRecordResponseDTO> queryAwardRecord(AwardRecordRequestDTO request);

    /**
     * 查询sku商品集合
     *
     * @param activityId 活动ID
     * @return 商品集合
     */
    Response<List<SkuProductResponseDTO>> querySkuProductListByActivityId(Long activityId);

    /**
     * 查询用户积分值
     *
     * @param userId 用户ID
     * @return 可用积分
     */
    Response<BigDecimal> queryUserCreditAccount(String userId);

    /**
     * 积分支付兑换商品
     *
     * @param request 请求对象「用户ID、商品ID」
     * @return 兑换结果
     */
    Response<Boolean> creditPayExchangeSku(SkuProductShopCartRequestDTO request);
}
